// 创建自定义精灵类
import {Bullet} from "../seed/Bullet.js";
import {ANIMS_PATH} from "../../common/path.js";
import PlantAbstract from "../abstract/PlantAbstract.js";

export default class SnowPea extends PlantAbstract {
    constructor(scene, x, y, direction,type) {
        super(scene, x, y, "SnowPea", 20,type);
        const { Body, Bodies } = Phaser.Physics.Matter.Matter; // 访问原生的 Matter 模块
        this.label = "SnowPea"; // 设置标签为火球
        this.scene = scene; // 保存场景引用
        this.direction = direction; // 保存火球的移动方向
        scene.add.existing(this); // 将火球添加到场景中

        this.setIgnoreGravity(true); // 设置忽略重力
        this.width=1;
        // 设置自定义的尺寸
        const radius = 1; // 自定义半径
        const options = {
            label: this.label,
            isSensor: false, // 确保火球可以进行物理碰撞
        };

        // 使用 Matter.js 创建一个圆形的物理体
        const zombieBody = Bodies.rectangle(x , y, this.width/4, this.height, options);
        this.setExistingBody(zombieBody); // 将物理体应用到当前的 Sprite


        // 设置横向速度
        // this.setVelocityX(5 * this.direction); // 设置火球的速度

        // 自定义物理属性
        this.setMass(1);
        this.setBounce(0); // 设置火球的反弹系数
        this.setDepth(0);

        this.init()

    }
    init() {
        const anims = ANIMS_PATH.Plants.SnowPea
        const frames = Array.from({ length: anims.count }, (_, i) => ({ key: `${anims.name}${i}` }));
// 创建动画，自动生成帧
        this.anims.create({
            key: anims.name,
            frames: frames,
            frameRate: 10,
            repeat: -1
        });

// 播放动画
        this.anims.play(anims.name);
// 定时创建子弹
// this.game.time.events.loop(Phaser.Timer.SECOND * 0.5, this.createBullet, this); // 每0.5秒
        this.event= this.scene.time.addEvent({
            delay: 1000,               // 延迟1秒
            callback: this.createBullet,     // 回调函数
            callbackScope: this,       // 设置函数的作用域
            loop: true                 // 设置为循环
        });
        new Bullet(this.scene, this.x+10, this.y-20,1);
    }
    createBullet() {
        // 创建子弹实例并设置位置
        new Bullet(this.scene, this.x-20, this.y-20,1,ANIMS_PATH.Bullets.PeaIce.name);

    }
    // 更新方法
    update(time, delta) {

    }
    destroy() {

        // 停止阳光生成定时器
        this.event.remove();
        // 销毁当前的 Sprite
        super.destroy(); // 调用父类的 destroy 方法，确保资源被释放

        // 如果有其他需要清理的资源，可以在这里处理
    }
}